package bsf.baseservice.businessmq.producter;

import bsf.base.TimeSpan;

import java.util.Date;

/**
 生产者上下文信息
 
*/
public class ProducterContext implements AutoCloseable
{
	/** 
	 生产者提供者信息
	 
	*/
	public ProducterProvider ProducterProvider;
	/** 
	 生产者信息
	 
	*/
	public ProducterInfo ProducterInfo;
	/** 
	 整个上下文信息是否需要重新获取启动
	 
	*/
	public boolean IsNeedReload;
	/** 
	 上次生成者错误时间(本地程序时间)
	 
	*/
	public Date SendMessageErrorTime;
	/** 
	 上一次MQPath的更新时间缓存
	 
	*/
	public Date LastMQPathUpdateTime;
	/** 
	 服务器标准时间(管理中心时间)
	 
	*/
	public Date getManageServerTime()
	{
		Date date = new Date();
		date.setTime(new Date().getTime() - _calibrateTimeSpan.getMilliSeconds());
		return date;
	}
	public void setManageServerTime(Date value)
	{
		_calibrateTimeSpan = new TimeSpan(new Date().getTime() - value.getTime());
	}
	private TimeSpan _calibrateTimeSpan = new TimeSpan(0); //服务器标准时间和当前服务器时间的校准时间间隔
	/** 
	 当前上下文是否已经释放
	 
	*/
	public boolean disposeing = false;

	public final int getMQPathID()
	{
		if (ProducterInfo != null && ProducterInfo.MqPathModel != null)
		{
			return ProducterInfo.MqPathModel.id;
		}
		else
		{
			return -1;
		}

	}

	public final String getMQPath()
	{
		if (ProducterInfo != null && ProducterInfo.MqPathModel != null)
		{
			return ProducterInfo.MqPathModel.mqpath;
		}
		else
		{
			return "";
		}

	}

	/** 
	 上下文释放
	 
	*/
	public final void close()
	{
		disposeing = true;
		ProducterProvider=null;
		ProducterInfo=null;
	}
}